# -*- makefile -*- for the C-level run-time support for SBCL

# This software is part of the SBCL system. See the README file for
# more information.
#
# This software is derived from the CMU CL system, which was
# written at Carnegie Mellon University and released into the
# public domain. The software is in the public domain and is
# provided with absolutely no warranty. See the COPYING and CREDITS
# files for more information.

TARGET=sbcl.exe

ASSEM_SRC = x86-assem.S
ARCH_SRC = x86-arch.c

OS_SRC = win32-os.c x86-win32-os.c

ifdef LISP_FEATURE_SB_LINKABLE_RUNTIME
  LIBSBCL = libsbcl.a
  USE_LIBSBCL = -Wl,--whole-archive libsbcl.a -Wl,--no-whole-archive
endif

# The "--Wl,--export-dynamic" flags are here to help people
# experimenting with callbacks from C to SBCL, by allowing linkage to
# SBCL src/runtime/*.c symbols from C. Work on this is good, but it's
# definitely bleeding edge and not particularly stable. In particular,
# not only are the workarounds for the GC relocating Lisp code and
# data unstable, but even the basic calling convention might end up
# being unstable. Unless you want to do some masochistic maintenance
# work when new releases of SBCL come out, please don't try to build
# real code on this until a coherent stable interface has been added.
# (You *are* encouraged to design and implement a coherent stable
# interface, though.:-| As far as I (WHN 2002-05-19) know, no one is
# working on one and it would be a nice thing to have.)
LINKFLAGS = -Wl,-export-all-symbols
LIBSBCL += mswin64.def mswin.def
USE_LIBSBCL += -Wl,mswin64.def -Wl,mswin.def
__LDFLAGS__ =

OS_LIBS = -l ws2_32 -ladvapi32
ifdef LISP_FEATURE_SB_CORE_COMPRESSION
  OS_LIBS += -lz
endif
ifdef LISP_FEATURE_SB_FUTEX
  OS_LIBS += -lSynchronization
endif

GC_SRC = fullcgc.c gencgc.c traceroot.c

CFLAGS = -g -Wall -O3 \
        -fno-omit-frame-pointer -march=i686 -DWINVER=0x600 -D_WIN32_WINNT=0x600 \
        -D__W32API_USE_DLLIMPORT__ \
	-mpreferred-stack-boundary=2
# We assume Windows ABI 4-byte alignment, but GCC decided to change to
# 16-byte alignment

CC = gcc

# Nothing to do for after-grovel-headers.
.PHONY: after-grovel-headers
after-grovel-headers:
